home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / mozilla-firefox / include / java / jni_md.h < prev    next >
C/C++ Source or Header  |  2006-05-08  |  7KB  |  183 lines

  1. /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  2.  *
  3.  * The contents of this file are subject to the Netscape Public
  4.  * License Version 1.1 (the "License"); you may not use this file
  5.  * except in compliance with the License. You may obtain a copy of
  6.  * the License at http://www.mozilla.org/NPL/
  7.  *
  8.  * Software distributed under the License is distributed on an "AS
  9.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  10.  * implied. See the License for the specific language governing
  11.  * rights and limitations under the License.
  12.  *
  13.  * The Original Code is mozilla.org code.
  14.  *
  15.  * The Initial Developer of the Original Code is Netscape
  16.  * Communications Corporation.  Portions created by Netscape are
  17.  * Copyright (C) 1998 Netscape Communications Corporation. All
  18.  * Rights Reserved.
  19.  *
  20.  * Contributor(s): 
  21.  *
  22.  *
  23.  * This Original Code has been modified by IBM Corporation.
  24.  * Modifications made by IBM described herein are
  25.  * Copyright (c) International Business Machines
  26.  * Corporation, 2000
  27.  *
  28.  * Modifications to Mozilla code or documentation
  29.  * identified per MPL Section 3.3
  30.  *
  31.  * Date         Modified by     Description of modification
  32.  * 03/27/2000   IBM Corp.       Set JNICALL to Optlink for
  33.  *                               use in OS2
  34.  */
  35.  
  36. /*******************************************************************************
  37.  * Netscape version of jni_md.h -- depends on jri_md.h
  38.  ******************************************************************************/
  39.  
  40. #ifndef JNI_MD_H
  41. #define JNI_MD_H
  42.  
  43. #include "prtypes.h" /* needed for _declspec */
  44.  
  45. /*******************************************************************************
  46.  * WHAT'S UP WITH THIS FILE?
  47.  * 
  48.  * This is where we define the mystical JNI_PUBLIC_API macro that works on all
  49.  * platforms. If you're running with Visual C++, Symantec C, or Borland's 
  50.  * development environment on the PC, you're all set. Or if you're on the Mac
  51.  * with Metrowerks, Symantec or MPW with SC you're ok too. For UNIX it shouldn't
  52.  * matter.
  53.  
  54.  * Changes by sailesh on 9/26 
  55.  
  56.  * There are two symbols used in the declaration of the JNI functions
  57.  * and native code that uses the JNI:
  58.  * JNICALL - specifies the calling convention 
  59.  * JNIEXPORT - specifies export status of the function 
  60.  * 
  61.  * The syntax to specify calling conventions is different in Win16 and
  62.  * Win32 - the brains at Micro$oft at work here. JavaSoft in their
  63.  * infinite wisdom cares for no platform other than Win32, and so they
  64.  * just define these two symbols as:
  65.  
  66.  #define JNIEXPORT __declspec(dllexport)
  67.  #define JNICALL __stdcall
  68.  
  69.  * We deal with this, in the way JRI defines the JRI_PUBLIC_API, by
  70.  * defining a macro called JNI_PUBLIC_API. Any of our developers who
  71.  * wish to use code for Win16 and Win32, _must_ use JNI_PUBLIC_API to
  72.  * be able to export functions properly.
  73.  
  74.  * Since we must also maintain compatibility with JavaSoft, we
  75.  * continue to define the symbol JNIEXPORT. However, use of this
  76.  * internally is deprecated, since it will cause a mess on Win16.
  77.  
  78.  * We _do not_ need a new symbol called JNICALL. Instead we
  79.  * redefine JNICALL in the same way JRI_CALLBACK was defined.
  80.  
  81.  ******************************************************************************/
  82.  
  83. /* DLL Entry modifiers... */
  84. #if defined(XP_OS2)
  85. #  ifdef XP_OS2_VACPP
  86. #     define JNI_PUBLIC_API(ResultType)      ResultType _System
  87. #     define JNI_PUBLIC_VAR(VarType)         VarType
  88. #     define JNICALL                         _Optlink
  89. #     define JNIEXPORT
  90. #  else
  91. #     define JNI_PUBLIC_API(ResultType)       ResultType
  92. #     define JNI_PUBLIC_VAR(VarType)         VarType
  93. #     define JNICALL
  94. #     define JNIEXPORT
  95. #  endif
  96. /* Win32 */
  97. #elif defined(XP_WIN) || defined(_WINDOWS) || defined(WIN32) || defined(_WIN32)
  98. #    include <windows.h>
  99. #    if defined(_MSC_VER) || defined(__GNUC__)
  100. #        if defined(WIN32) || defined(_WIN32)
  101. #            define JNI_PUBLIC_API(ResultType)    _declspec(dllexport) ResultType __stdcall
  102. #            define JNI_PUBLIC_VAR(VarType)        VarType
  103. #            define JNI_NATIVE_STUB(ResultType)    _declspec(dllexport) ResultType
  104. #            define JNICALL                          __stdcall
  105. #        else /* !_WIN32 */
  106. #            if defined(_WINDLL)
  107. #            define JNI_PUBLIC_API(ResultType)    ResultType __cdecl __export __loadds 
  108. #            define JNI_PUBLIC_VAR(VarType)        VarType
  109. #            define JNI_NATIVE_STUB(ResultType)    ResultType __cdecl __loadds
  110. #            define JNICALL                    __loadds
  111. #            else /* !WINDLL */
  112. #            define JNI_PUBLIC_API(ResultType)    ResultType __cdecl __export
  113. #            define JNI_PUBLIC_VAR(VarType)        VarType
  114. #            define JNI_NATIVE_STUB(ResultType)    ResultType __cdecl __export
  115. #            define JNICALL                    __export
  116. #                   endif /* !WINDLL */
  117. #        endif /* !_WIN32 */
  118. #    elif defined(__BORLANDC__)
  119. #        if defined(WIN32) || defined(_WIN32)
  120. #            define JNI_PUBLIC_API(ResultType)    __export ResultType
  121. #            define JNI_PUBLIC_VAR(VarType)        VarType
  122. #            define JNI_NATIVE_STUB(ResultType)     __export ResultType
  123. #            define JNICALL
  124. #        else /* !_WIN32 */
  125. #            define JNI_PUBLIC_API(ResultType)    ResultType _cdecl _export _loadds 
  126. #            define JNI_PUBLIC_VAR(VarType)        VarType
  127. #            define JNI_NATIVE_STUB(ResultType)    ResultType _cdecl _loadds
  128. #            define JNICALL            _loadds
  129. #        endif
  130. #    else
  131. #        error Unsupported PC development environment.    
  132. #    endif
  133. #    ifndef IS_LITTLE_ENDIAN
  134. #        define IS_LITTLE_ENDIAN
  135. #    endif
  136.     /*  This is the stuff inherited from JavaSoft .. */
  137. #    define JNIEXPORT __declspec(dllexport)
  138.  
  139.  
  140. /* Mac */
  141. #elif macintosh || Macintosh || THINK_C
  142. #    if defined(__MWERKS__)                /* Metrowerks */
  143. #        if !__option(enumsalwaysint)
  144. #            error You need to define 'Enums Always Int' for your project.
  145. #        endif
  146. #        if defined(TARGET_CPU_68K) && !TARGET_RT_MAC_CFM 
  147. #            if !__option(fourbyteints) 
  148. #                error You need to define 'Struct Alignment: 68k' for your project.
  149. #            endif
  150. #        endif /* !GENERATINGCFM */
  151. #        define JNI_PUBLIC_API(ResultType)    __declspec(export) ResultType 
  152. #        define JNI_PUBLIC_VAR(VarType)        JNI_PUBLIC_API(VarType)
  153. #        define JNI_NATIVE_STUB(ResultType)    JNI_PUBLIC_API(ResultType)
  154. #    elif defined(__SC__)                /* Symantec */
  155. #        error What are the Symantec defines? (warren@netscape.com)
  156. #    elif macintosh && applec            /* MPW */
  157. #        error Please upgrade to the latest MPW compiler (SC).
  158. #    else
  159. #        error Unsupported Mac development environment.
  160. #    endif
  161. #    define JNICALL
  162.     /*  This is the stuff inherited from JavaSoft .. */
  163. #    define JNIEXPORT
  164.  
  165. /* Unix or else */
  166. #else
  167. #    define JNI_PUBLIC_API(ResultType)        ResultType
  168. #       define JNI_PUBLIC_VAR(VarType)                  VarType
  169. #       define JNI_NATIVE_STUB(ResultType)              ResultType
  170. #    define JNICALL
  171.     /*  This is the stuff inherited from JavaSoft .. */
  172. #    define JNIEXPORT
  173. #endif
  174.  
  175. #ifndef FAR        /* for non-Win16 */
  176. #define FAR
  177. #endif
  178.  
  179. /* Get the rest of the stuff from jri_md.h */
  180. #include "jri_md.h"
  181.  
  182. #endif /* JNI_MD_H */
  183.